This invention relates to a software system that permits the software modeling of a plurality of hardware components and their hardware connections with a corresponding plurality of software components and connections.
Software components are widely used in the assembly of complex software systems capable of performing detailed functions. A software component comprises a body of code which implements some software function and one or more public software interfaces which define the manner in which that component communicates with other components. In this manner components need not be aware of the internal implementation details of other components so long as they communicate with one another using the public interfaces. This arrangement is similar to the manner in which complex hardware systems are constructed in that two hardware components can successfully communicate with one another over a common hardware interface so long as they both adhere to the specifications (both electrical and logical) of that interface.
Often the development of a complex hardware system requires the development of a corresponding software simulation model which simulates the behavior of the hardware system. This software model is used by system developers to design and verify a system prior to availability of the actual hardware. This should not to be confused with hardware simulation models developed for the purposes of low level hardware design and verification as these simulation models tend run between 1000 and 10,000 time slower and are therefore unsuitable for system simulation. Hardware simulation models have the advantage that they are structurally equivalent to the hardware that is being modeled. In other words there is a one to one correspondence between hardware components and connections in the hardware and their software equivalents in the simulation model. This is a significant main contributor to the slower performance of hardware simulations. Because they do not enforce structural equivalency, software simulations can be much faster than their hardware counterparts. However, the loss of one-to-one correspondence between components and connections in the hardware and corresponding components and connections in the software model, makes it more difficult to modify the software model in order to track changes in the hardware.
It is an object of the present invention to be able to connect software elements with one another without any penalties in performance.
Another object is to improve the productivity in the development of complex software systems.
Yet another object is to permit the us of software macros in various combinations to mimic hardware architecture.
Still another object is to permit the assembly of software macros in a simple yet effective manner while at the same time concealing the software contents.
One further object is to permit connections to be made between software components without penalties in performance even though a software component may be embedded deep within a software system.
These and other objects and advantages that will become apparent to one skilled in the art upon a reading of the following description are achieved in the manner to be hereinafter described in greater detail.
For purposes of this description, software part, software component and software macro are used interchangeably throughout.
The present invention relates to a system and method for software modeling of hardware architecture. The system includes a software part corresponding to an individual component of the hardware architecture, said software part including a set of interface code functions. It also includes a data structure associated with the software part comprising a plug table containing one or more plugs. Each plug includes an assigned plug identifier, a description of the plug type, the name of a given interface code function accessed by the plug, and an address for the given function if the function is available for export from the software part. The plug type can be an export plug, an import plug, a splitter plug or a compound plug. When the plug is an export plug, the system and process includes a second software part, a plug table associated with the second software part and containing one or more plugs including an import plug, and a connector joining the export plug in the plug table of the first software part with an import plug in the plug table of the second software part for transfer of the code function address from the first software part into the second software part. The system and method can also include means for inputting the address of the given code function into the table of the second software part upon completion of a connection.
The system and method are typically used when the first and the second software parts belong to a software hierarchical configuration including additional plugs and connectors for each software part in the hierarchy for passing interface code functions from the first and second software parts to the software parts at the top of the software hierarchy. For purposes of the following discussion, the first and second software parts will be described respectively as the left software part and the right software part.
One embodiment of the invention utilizes a left software part and a right software part and means for creating a connection between the left part and the right part through an import plug, an export plug and a connector. A plug table is associated with the left software part and includes a left plug number for the left plug type. A plug table is associated with the right software part and includes a right plug number for the right plug type. A connection table is associated with the connector and contains data defining the left plug type and the right plug type and an address of the connection functions. The system utilizes a protocol for searching the connection table for an import/export match between the plugs corresponding to the part location of a function address. If a match is found, the system includes means for executing a connection function. If no match is found, the system terminates the connection function.
The invention also contemplates the use of a process for creating a connection between a left software part and the right software part through an import plug, an export plug and a connector. The process comprises the steps of finding a left plug type for the left plug number from a plug table associated with the left software part and finding a right plug number for the right plug type plug from the table associated with the right software part. A connection table associated with the connector containing data defining the left plug type and the right plug type is then searched for an address of the connection functions for an import/export match between the plugs corresponding to the part location of a function address. If a match is found, a connection function is executed, and if a match is not found the connection function is terminated.
If the connection is made, the function is transferred between the left software part and the right software part through the connector if a function match is found. This includes finding the left function name from the plug table in the left part; finding the right function name from the plug table in the right part; copying the function address from the plug table of the part having an export plug to the plug table of the part having an import plug, or terminating the process if the names do not match.
The invention also contemplates a machine readable media comprising an import plug, a connector, and an export plug that operates to connect a first software part to a second software part to permit the software simulation of a hardware system. The media preferably is in the form of a magnetic disc.